Computer animation games are a popular form of entertainment finding widespread use in a variety of forms, including: standalone game systems, game cartridge systems connected to television sets, and game software for personal computers.
Many game systems, today, are played across multiple computers, which are connected together by a network. These systems allow multiple players sitting at individual computers, often remote from each other, to participate in, the same game. Players are able to compete against each other as well as simulated opponents that may be managed by a game server, thereby adding a new dimension to the competition. These systems, and others, may also allow many players to participate in separate games competing against a simulated opponent managed by the game server, rather than another remote player.
For their part, many of today's computer animation games are written in an object-oriented programming language using object-oriented programming techniques. In this regard, an “object” may refer to a specific programming construct (such as data hiding, containment, hierarchies, and the like) that typically defines associated data members and methods, such as an object instantiated from a C++ class, a Java class, Object Pascal class, and the like.
Such objects may be transferred during a game session across the network that may connect the game server with one or more client devices. Transferring these objects may use a process known as serialization. Serialization is the general term for the processes of taking an attribute (e.g., data) of a given object and building a stream of bits that includes that data. The stream is typically in a form that may be readily manipulated and sent over the network, using a network protocol, such as TCP, or the like. This process may also sometimes be referred to as streaming, flattening, or even more prosaically as pickling.
The determination of which objects, associated data, and the like, to serialize, as well as how to serialize the determined objects becomes important, especially in a multi-client/server environment, and especially where performance may be of paramount concern. It is thus with respect to these considerations, and others, that the present invention has been made.